/*
 * wk_hash_types.h
 *
 *  Created on: 2012-3-8
 *      Author: tianmax
 */

#ifndef __WK_HASH_TYPES_H__
#define __WK_HASH_TYPES_H__

#include "wk_types.h"
#include "wk_slist.h"
#include "wk_element.h"
///**
// * 给Hash数据元素类型起别名
// * 这样做的目的是便于直接将通用Hash变为专用Hash
// */
//typedef WPSListElementType WPHashElementType;

/**
 * 给hash表中用到的链表起一个别名
 */
typedef WSList WHashList;

/**
 * 给hash表中用到的链表的节点类型起一个别名
 */
typedef WSListNode WHashListNode;

/**
 * 给Hash函数指针起别名
 */
typedef wlong_t (*wk_hash_func)(WPElement,wsize_t);

struct wk_hash{

	/*函数主体的size*/
	wsize_t table_size;
	/*哈希主体*/
	WHashList** hash;
	/*哈希函数*/
	wk_hash_func hash_func;
	/*元素比较函数*/
	wk_element_comp comp;
};
typedef struct wk_hash WHash;

///**
// * 给比较函数指针类型起别名
// */
//typedef int (*wk_hash_comp)(WPElement data1,WPElement data2);

///**
// * 给遍历操作函数指针起别名
// * ctx上下文
// */
//typedef void* (*wk_hash_iterate_do)(WPHashElementType data,void* ctx);


#endif /* WK_HASH_TYPES_H_ */
